package com.hdc.mumuwei.micro_account_server.mapper;

import com.hdc.mumuwei.micro_account_server.po.User;
import com.hdc.mumuwei.micro_account_server.po.Paging;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author Mumuwei
 * @Description
 * @create 2021/11/19 22:45
 */
@Mapper
public interface UserMapper {
    /**
     * 添加用户（用户注册，管理员添加用户） mapper
     * @param user 用户对象
     * @return 插入语句返回影响行数，大于0则操作成功
     */
    Integer addUser(User user);

    /**
     * 根据用户名获取用户密码
     * @param username 用户名
     * @return 密码
     */
    String findUserPassByUsername(String username);

    /**
     * 根据用户openId获取用户信息
     */
    User findUserByOpenId(String openId);

    /**
     * 根据用户id获取用户密码
     * @param id 用户id
     * @return 密码
     */
    String findUserPassByid(Integer id);

    /**
     * 根据用户id获取用户信息
     * @param id 用户id
     * @return 用户信息
     */
    User getUserById(Integer id);

    /**
     * 判断用户名是否存在
     * @param username 用户名
     * @return 返回被查询用户名的用户对象
     */
    User findUserByUsername(String username);

    /**
     * 判断邮箱是否已被绑定
     * @param email 邮箱
     * @return 返回被查询邮箱的用户对象
     */
    User findUserByEmail(String email);

    /**
     * 修改用户密码
     * @param user 用户对象，存储用户信息
     * @return update语句返回影响行数，大于0则操作成功
     */
    Integer editPassword(User user);

    /**
     * 修改用户信息
     * @param user 用户对象，存储用户信息
     * @return insert语句返回影响行数，大于0则操作成功
     */
    Integer updateUserInfo(User user);

    /**
     * 通过id删除用户
     * @param id 删除用户的id
     * @return delete语句返回影响行数，大于0则操作成功
     */
    Integer delUserById(Integer id);

    /**
     * 获取用户列表（不分页）
     * @return 所有用户列表list
     */
    List<User> getAllUsers();

    /**
     * 获取用户列表（分页）
     * @param paging 分页传参对象
     * @return 分页用户列表
     */
    List<User> getUserList(Paging paging);

    /**
     * 获取用户总数
     * @param paging 分页传参对象
     * @return 返回用户总数
     */
    Integer getUserTotal(Paging paging);
}
